#include <iostream>
#include <future>
#include <thread>
#include <chrono>


int Add(int num1, int num2)
{
    std::cout << "into add\n";
    return num1 + num2;
}

int main()
{
    // 异步函数
    // std::launch::deferred 代表调用get函数的时候才会执行这个函数 deferred 推迟
    // std::launch::async 代表直接执行函数并且把结果放到future中
    // std::future<int> res = std::async(std::launch::async, Add, 33, 22);
    std::future<int> res = std::async(std::launch::deferred, Add, 33, 22);
    std::cout << "-----------------\n";
    std::this_thread::sleep_for(std::chrono::seconds(2));

    std::cout << res.get() << std::endl;

    return 0;
}